<!DOCTYPE html>
<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
<head>
	<meta charset="UTF-8">
	<style>
		::selection {
			background: #b7ffb7;
		}
		::-moz-selection {
			background: #b7ffb7;
		}

		body {
			font-family: Arial, Helvetica, sans-serif;
			font-size: 16px;
			width: 800px;
			margin: 0 auto;
		}
		#banner {
			/* Div for banner */
			float:left;
			margin: 0px;
			margin-bottom: 10px;
			width: 100%;
			background-color: #0071C5;
			z-index: 0;
		}
		#banner .logo {
			/* Apply to logo in banner. Add as class to image tag. */
			float: left;
			margin-right: 20px;
			margin-left: 20px;
			margin-top: 15px;
			padding-bottom: 5px;
		}
		h1 {
			text-align: center;
			font-size: 36px;
		}
		h1.title {
			/* Add as class to H1 in banner */
			font-family: "Intel Clear", Verdana, Arial, sans-serif;
			font-weight:normal;
			color: #FFFFFF;
			font-size: 170%;
			margin-right: 40px;
			margin-left: 40px;
			padding-right: 20px;
			text-indent: 20px;
		}
		.h3-alike {
			display:inline;
			font-size: 1.17em;
			font-weight: bold;
			color: #0071C5;
		}
		h3 {
			font-size: 1.17em;
			font-weight: bold;
			color: #0071C5;
		}
		.h4-alike {
			display:inline;
			font-size: 1.05em;
			font-weight: bold;
		}
		pre {
			font-family: "Consolas", Monaco, monospace;
			font-size:small;
			background: #fafafa;
			margin: 0;
			padding-left:20px;
		}
		#footer {
			font-size: small;
		}
		code {
			font-family: "Consolas", Monaco, monospace;
		}
		.code-block
		{
			padding-left:20px;
		}
		.changes {
			margin: 1em 0;
		}
		.changes input:active {
			position: relative;
			top: 1px;
		}
		.changes input:hover:after {
			padding-left: 16px;
			font-size: 10px;
			content: 'More';
		}
		.changes input:checked:hover:after {
			content: 'Less';
		}
		.changes input + .show-hide {
			display: none;
		}
		.changes input:checked + .show-hide {
			display: block;
		}

		ul {
			margin: 0;
			padding: 0.5em 0 0.5em 2.5em;
		}
		ul li {
			margin-bottom: 3px;
		}
		ul li:last-child {
			margin-bottom: 0;
		}
		.disc {
			list-style-type:disc
		}
		.circ {
			list-style-type:circle
		}

		.single {
			padding: 0 0.5em;
		}

		/* ------------------------------------------------- */
		/* Table styles                                      */
		table{
			margin-bottom:5pt;
			border-collapse:collapse;
			margin-left:0px;
			margin-top:0.3em;
			font-size:10pt;
		}
		tr{
			vertical-align:top;
		}
		th,
		th h3{
			padding:4px;
			text-align:left;
			background-color:#0071C5;
			font-weight:bold;
			margin-top:1px;
			margin-bottom:0;
			color:#FFFFFF;
			font-size:10pt;
			vertical-align:middle;
		}
		th{
			border:1px #dddddd solid;
			padding-top:2px;
			padding-bottom:0px;
			padding-right:3px;
			padding-left:3px;
		}
		td{
			border:1px #dddddd solid;
			vertical-align:top;
			font-size:100%;
			text-align:left;
			margin-bottom:0;
		}
		td,
		td p{
			margin-top:0;
			margin-left:0;
			text-align:left;
			font-size:inherit;
			line-height:120%;
		}
		td p{
			margin-bottom:0;
			padding-top:5px;
			padding-bottom:5px;
			padding-right:5px;
			padding-left:1px;
		}
		.noborder{
			border:0px none;
		}
		.noborder1stcol{
			border:0px none;
			padding-left:0pt;
		}
		td ol{
			font-size:inherit;
			margin-left:28px;
		}
		td ul{
			font-size:inherit;
			margin-left:24px;
		}
		.DefListTbl{
			width:90%;
			margin-left:-3pt;
		}
		.syntaxdiagramtbl{
			margin-left:-3pt;
		}
		.sdtbl{
		}
		.sdrow{
		}
		.sdtblp{
			border:0px none;
			font-size:inherit;
			line-height:120%;
			margin-bottom:0;
			padding-bottom:0px;
			padding-top:5px;
			padding-left:0px;
			padding-right:5px;
			vertical-align:top;
		}
		.idepara, .ide_para{
			border:0px none;
			font-size:inherit;
			line-height:120%;
			margin-bottom:0;
			padding-bottom:0px;
			padding-top:5px;
			padding-left:0px;
			padding-right:5px;
			vertical-align:top;
		}

		.specs {
			border-collapse:collapse;
		}
		.specs td, .specs th {
			font-size: 14px;
		}
		.specs td {
			border: 1px solid black;
		}
		.specs td td, .specs td th {
			border: none;
		}
		.specs	td, .specs td td, .specs td th {
			padding: 0 0.2em 0.2em;
			text-align: center;
		}
		.specs td tr:last-child td,
		.specs td tr:last-child th {
			padding: 0 0.2em;
		}
		.serial-time {
		}
		.modified-time {
		width: 6.5em;
		}
		.compiler {
		}
		.comp-opt {
		}
		.sys-specs {
			width: 18em;
		}
		.note {
			font-size:small;
			font-style: italic;
		}
	</style>
	<title>Intel&reg; Threading Building Blocks. Common source code for samples</title>
</head>
<body>

	<div id="banner">
		<img class="logo" src="
				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
				9Or1LzUmVVz+HJXDAAAAAElFTkSuQmCC">
		<h1 class="title">Intel&reg; Threading Building Blocks.<br>Common source code for samples</h1>
	</div>

	<p>
		This directory contains common code that is used in the Intel&reg; Threading Building Blocks (Intel&reg; TBB) samples.
		<br>
		This code is not intended to be used directly. It is incorporated automatically by the examples that need it.
	</p>

	<div class="changes">
		<div class="h3-alike">Directories</div>
		<input type="checkbox" checked="checked">
		<div class="show-hide">
			<dl>
				<dt><a href="gui/">gui</a>
				<dd>
					GUI code for examples that have graphical user interfaces. Currently supports:
					<ul>
						<li>GDI+*, DirectDraw*, Direct2D* (Windows* systems)
						<li>OpenGL* (macOS* systems)
						<li>X window (Linux* or macOS* systems)
					</ul>
					See the examples that use the GUI
					(<a href="../graph/stereo/readme.html">stereo</a>,
					<a href="../parallel_for/tachyon/readme.html">tachyon</a>,
					<a href="../parallel_for/seismic/readme.html">seismic</a>,
					<a href="../task_arena/fractal/readme.html">fractal</a>)
					for more details.
			</dl>
			<dl>
				<dt><a href="utility/">utility</a>
				<dd>Common driver and utility code for examples. Currently provides:
					<ul>
						<li>class FastRandom - a random number generator that uses linear congruential method
							(<a href="utility/fast_random.h">fast_random.h</a>)
						<li>class thread_number_range - a class to specify the numbers of threads an example should use
							(<a href="utility/utility.h">utility.h</a>)
						<li>support for command line interface - class cli_argument_pack and function parse_cli_arguments
							(<a href="utility/utility.h">utility.h</a>)
					</ul>
			</dl>
		</div>
	</div>
	<div class="changes">
		<div class="h3-alike">Common information</div>
		<input type="checkbox" checked="checked">
		<div class="show-hide">
		<br>
		<div class="h4-alike">Number of threads</div>
			<p>
				Most Intel TBB examples allow to specify <i>n-of-threads</i>, the set of thread numbers that should be used to run an example.
				<br>Usually, it is a range of the form <i>low[:high[:(+|*|#)S]]</i>, where <i>low</i> and optional <i>high</i>
				are non-negative integers or 'auto' for the default choice, and optional step expression <i>(+|*|#)S</i>
				specifies how thread numbers are chosen within the range:
				<ul>
					<li>With <i>+/*</i>, the previous number is incremented/multiplied by <i>S</i>.
					E.g., expression '12:16:+1' means 12,13,14,15,16 threads, and '1:16:*2' means 1,2,4,8,16 threads.
					<li>With <i>#</i>, <i>S</i> is the desired number of steps between any subsequent powers of 2;
					it must be a power of 2 on its own, with most meaningful values being 2, 4, and 8.
					For a given number of threads, the actual step value is computed as the quotient
					of the nearest smaller power of 2 divided by the number of steps, but is at least 1.
					E.g., '1:32:#4' means 1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32 threads;
					note the step doubling at 8 and 16 to keep 4 steps between powers of 2.
				</ul>
				A default value for the number of threads can be customized in an example. If not customized, it is '1:auto:#4'.
				The 'auto' parameter is substituted with a value returned by a specified function
				(this function is typically <code>utility::get_default_num_threads()</code>, which returns a copy of
				constant that was initialized with <code>tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism)</code>
				at the start of the program).
			</p>
		</div>
	</div>

	<br>
	<a href="../index.html">Up to parent directory</a>
	<hr>
	<div class="changes">
	<div class="h3-alike">Legal Information:</div>
		<input type="checkbox">
		<div class="show-hide">
			<p>
				Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
				<br>* Other names and brands may be claimed as the property of others.
				<br>&copy; 2020, Intel Corporation
			</p>
		</div>
	</div>
</body>
</html>
